This invention relates generally to error correction codes (ECC) and more specifically to early detection of correctable data errors using an error correction code.
Error correction codes are often used in memory systems, busses or other data transmission environments. The general idea is to accept a data word of some number n of bits, compute from that data a reference syndrome of m-many bits, and then store or transmit an augmented word of those n+m bits. Upon retrieval or reception, the n bits of data are used again to compute a check syndrome of m-many bits, using the same algorithm that was used to produce the reference syndrome. The check syndrome is then compared with the retrieved or received reference syndrome. If they are identical, the original data word has been retrieved or transmitted without error. The power of the Error Correction Code (ECC) technique is that a few bits of syndrome can protect many bits of data. In the simplest case a single bit error (whether in the data or the received reference syndrome) can be detected and automatically corrected. An extension of the simplest case allows detection (but not automatic correction) of two bit errors. In addition, there are various schemes in which multi-bit errors can be detected and automatically corrected.
However, conventional ECC schemes form a complete error correction code before interpreting the results and initiating recovery procedures. This causes delays which, although very small individually, are collectively substantial. The flow of data is at the heart of modern electronic systems. Modern computer systems access millions of bits of data each second, and the access to data is often the most critical bottleneck. Therefore, improved systems of ensuring data integrity and speeding data access are needed.
Early detection of errors using an error correction code is enabled by forming a partial error code before a complete error code can be generated, and initiating an error recovery procedure as soon as the partial error code indicates the presence of a possible correctable error in the associated data word. The partial error code is formed based on a subset of the bits in reference and check syndromes generated from the data word. The partial error code consists of a subset of the bits of a complete error code. Errors can be detected earliest when the number of data bits used to generate each bit in the reference and check syndrome subsets is minimized.
After the partial error code is formed the generation of the complete error code continues. When the complete error code is available, the location of the error in the data word (or in the reference syndrome) can be determined. If the complete error code indicates that the error is not correctable, the recovery procedure can be aborted or changed as desired.